<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-GB" xml:lang="en-GB">
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="pandoc" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  <title>uihelpstims</title>
  <style>
  html {font-family: Hoefler Text, Palatino, Georgia, serif;
    color: #1a1a1a;
    background-color: #fdfdfd;}

  body {margin: 0 auto;
    max-width: 40em;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 5px;
    padding-bottom: 5px;
    hyphens: auto;
    overflow-wrap: break-word;
    text-rendering: optimizeLegibility;
    font-kerning: normal;
  }

  @media (max-width: 600px) {body {font-size: 0.9em;
    padding: 1em;}
    h1 {font-size: 1.8em;}
  }

  @media print {body {background-color: transparent;
    color: black;
    font-size: 12pt;}
    p, h2, h3 {	orphans: 3;
    widows: 3;}
    h2, h3, h4 {	page-break-after: avoid;}
  }

  header {display: none;}
  kbd {margin: 0px 0.1em;
    padding: 0.1em 0.6em;
    border-radius: 3px;
    border: 1px solid rgb(204, 204, 204);
    color: rgb(51, 51, 51);
    line-height: 1.4;
    font-family: Menlo, monospace;
    font-size: 11px;
    display: inline-block;
    box-shadow: 0px 1px 0px rgba(0,0,0,0.3);
    background-color: rgb(247, 247, 247);
    text-shadow: 0 1px 0 #fff;
  }
  kbd:hover {box-shadow: 0 1px 0 0.5px;}
  p {font-size: 18px;margin: 0.8em 0;line-height: 1.5;}
  a {color: #1a1a1a;}
  a:visited {color: #1a1a1a;}
  img {max-width: 100%;}
  h1, h2, h3, h4, h5, h6 {margin-top: 1.4em;}
  h5, h6 {font-size: 1em;
  font-style: italic;}
  h6 {font-weight: normal;}
  ol, ul {font-size: 18px;
    line-height: 1.2em;
    padding-left: 1.7em;
    margin-top: 1em;}
  li > ol, li > ul {margin-top: 0;}
  blockquote {margin: 1em 0 1em 1.7em;
    padding-left: 1em;
    border-left: 2px solid #e6e6e6;
    color: #606060;
    font-style: italic;}
  code {font-family: Fira Code, Menlo, Consolas, monospace;
    font-size: 14px;
    margin: 0;
    background-color: #F0F0F0;
    color:rgb(145, 16, 42);
  }
  pre {margin: 1em 0;
    overflow: auto;
  }
  pre code {padding: 0;
    overflow: visible;
    overflow-wrap: normal;
    background-color:transparent;
    color: black;
  }
  pre.smaller code {font-size: 60% !important; line-height: .75rem !important;}
  .sourceCode {background-color: transparent;
    overflow: visible;
  }
  hr {background-color: #1a1a1a;
    border: none;
    height: 1px;
    margin: 1em 0;
  }
  table {margin: 1em 0;
    border-collapse: collapse;
    width: 100%;
    overflow-x: auto;
    display: block;
    font-variant-numeric: lining-nums tabular-nums;
  }
  table caption {margin-bottom: 0.75em;}
  tbody {margin-top: 0.5em;
    border-top: 1px solid #1a1a1a;
    border-bottom: 1px solid #1a1a1a;
  }
  th {border-top: 1px solid #1a1a1a;
    padding: 0.25em 0.5em 0.25em 0.5em;
  }
  td {padding: 0.125em 0.5em 0.25em 0.5em;}
  header {margin-bottom: 4em;
    text-align: center;
  }
  #TOC li {list-style: none;}
  #TOC ul {padding-left: 1.3em;}
  #TOC > ul {padding-left: 0;}
  #TOC a:not(:hover) {text-decoration: none;}
  code{white-space: pre-wrap;}
  span.smallcaps{font-variant: small-caps;}
  span.underline{text-decoration: underline;}
  div.column{display: inline-block; vertical-align: top; width: 50%;}
  div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
  ul.task-list{list-style: none;}
  pre > code.sourceCode { white-space: pre; position: relative;}
  pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
  pre > code.sourceCode > span:empty { height: 1.2em; }
  .sourceCode { overflow: visible; }
  code.sourceCode > span { color: inherit; text-decoration: inherit; }
  div.sourceCode { margin: 2em 0; }
  pre.sourceCode { margin: 0; }
  @media screen {
  div.sourceCode { overflow: auto; background-color: #F0F0F0;}
  }
  @media print {
  pre > code.sourceCode { white-space: pre-wrap;}
  pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
  }
  pre.numberSource code
    { counter-reset: source-line 0; }
  pre.numberSource code > span
    { position: relative; left: -4em; counter-increment: source-line; }
  pre.numberSource code > span > a:first-child::before
    { content: counter(source-line);
      position: relative; left: -1em; text-align: right; vertical-align: baseline;
      border: none; display: inline-block;
      -webkit-touch-callout: none; -webkit-user-select: none;
      -khtml-user-select: none; -moz-user-select: none;
      -ms-user-select: none; user-select: none;
      padding: 0 4px; width: 4em;
      color: #aaaaaa;
    }
  pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
  @media screen {
  pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
  }
  code span.al { color: #ff0000; font-weight: bold; } /* Alert */
  code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
  code span.at { color: #7d9029; } /* Attribute */
  code span.bn { color: #40a070; } /* BaseN */
  code span.bu { color: #008000; } /* BuiltIn */
  code span.cf { color: #0044a3; font-weight: bold; } /* ControlFlow */
  code span.ch { color: #4070a0; } /* Char */
  code span.cn { color: #880000; } /* Constant */
  code span.co { color: #779097; font-style: italic; } /* Comment */
  code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
  code span.do { color: #ba2121; font-style: italic; } /* Documentation */
  code span.dt { color: #902000; } /* DataType */
  code span.dv { color: #40a070; } /* DecVal */
  code span.er { color: #ff0000; font-weight: bold; } /* Error */
  code span.fl { color: #40a070; } /* Float */
  code span.fu { color: #06287e; } /* Function */
  code span.im { color: #008000; font-weight: bold; } /* Import */
  code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
  code span.kw { color: #00338a; font-weight: bold; } /* Keyword */
  code span.op { color: #666666; } /* Operator */
  code span.ot { color: #007020; } /* Other */
  code span.pp { color: #bc7a00; } /* Preprocessor */
  code span.sc { color: #4070a0; } /* SpecialChar */
  code span.ss { color: #bb6688; } /* SpecialString */
  code span.st { color: #4070a0; } /* String */
  code span.va { color: #201f45; } /* Variable */
  code span.vs { color: #4070a0; } /* VerbatimString */
  code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
  .display.math{display: block; text-align: center; margin: 0.5rem auto;}
  </style>
</head>
<body>
<h1 id="configuring-stimuli">Configuring Stimuli</h1>
<p>Opticka uses many different stimulus classes that are collected
together using a metaStimulus class. The order of the stimulus in the
list defines the z-index at which it is drawn (higher number gets drawn
on top of lower number). Stimuli collected into a metaStimulus can then
be controlled as a single object. In this code for example:</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode matlab"><code class="sourceCode matlab"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="va">d</span> <span class="op">=</span> <span class="va">dotsStimulus</span>(<span class="ss">&#39;XPosition&#39;</span><span class="op">,</span> <span class="fl">5</span><span class="op">,</span> <span class="ss">&#39;mask&#39;</span><span class="op">,</span> <span class="va">true</span>)<span class="op">;</span> <span class="co">%coherent dots</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="va">f</span> <span class="op">=</span> <span class="va">fixationCrossStimulus</span>(<span class="ss">&#39;alpha&#39;</span><span class="op">,</span> <span class="fl">0.5</span>)<span class="op">;</span> <span class="co">%fixation cross</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="va">stims</span> <span class="op">=</span> <span class="va">metaStimulus</span>()<span class="op">;</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="va">stims</span>{<span class="fl">1</span>} <span class="op">=</span> <span class="va">d</span><span class="op">;</span> </span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="va">stims</span>{<span class="fl">2</span>} <span class="op">=</span> <span class="va">f</span><span class="op">;</span></span></code></pre></div>
<p>We have two stimuli, and by default <code>draw(stims)</code> will
draw <strong>both</strong> the coherent dots <strong>and</strong> the
fixation cross in one single command. You can then do things like
hide/show one or all stimuli:</p>
<div class="sourceCode" id="cb2"><pre
class="sourceCode matlab"><code class="sourceCode matlab"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="va">hide</span>(<span class="va">stims</span>)<span class="op">;</span> <span class="co">% hide all stims</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="va">show</span>(<span class="va">stims</span><span class="op">,</span> <span class="fl">2</span>)<span class="op">;</span> <span class="co">% set the 2nd stimulus (fixationCross) to be shown.</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="va">draw</span>(<span class="va">stims</span>)<span class="op">;</span> <span class="co">%now only 2nd stimulus will actually be drawn</span></span></code></pre></div>
<p>These commands can be run via the <a
href="uihelpstate.html">stateInfo file</a>. The GUI allows you to add
and order stimuli into this metaStimulus manager.</p>
<h1 id="adding-editing-stimuli">Adding &amp; Editing Stimuli</h1>
<p>You can start by selecting a stimulus type from the “Stimulus” menu.
You should now see a stimulus panel with individual properties on the
right. For example <code>fixationCross</code> has a <code>colour</code>
property which defines the disc colour and <code>colour2</code> which
defines the cross colour. For each stimulus in the list you can edit all
these properties. When you are happy with the settings, you
<kbd>Add</kbd> it to the stimulus list. The GUI panel on the right
updates as you select different stimuli in the stimulus list. You can
continue to edit all properties by selecting the stimulus in the list
and editing the values.</p>
<p>To move stimuli up or down the list (affecting in what order the
stimuli are drawn) use the <kbd>↑</kbd> and <kbd>↓</kbd> icons.</p>
<h1 id="previewing-stimuli">Previewing Stimuli</h1>
<ul>
<li><kbd>▷</kbd> Run a single stimulus in an onscreen window to preview
how it will look.</li>
<li><kbd>▷⚡️</kbd> Benchmark run a single stimulus. See command window
for FPS.</li>
<li><kbd>▶︎</kbd> Rull all stimuli in an onscreen window to preview how
they will look.</li>
<li><kbd>▶︎⚡️</kbd> Benchmark all stimuli. See command window for
FPS.</li>
</ul>
</body>
</html>
